package ec.linde.persistencia.entidades.proyectos;

import static javax.persistence.GenerationType.IDENTITY;

import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Digits;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

/**
 * TODO: Agregar descripcion
 * 
 * @FechaCreacion: 29/09/2014
 * @author: Alex Carrillo
 * @FechaModificacion: 29/09/2014
 * @author: Alex Carrillo
 * @version: 1.0
 */
@Entity
@Table(name = "prod_cronograma_rdo", schema = "productividad")
public class CronogramaRdo extends EntidadBase {

	private static final long serialVersionUID = 3935545106378163867L;

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "crdo_id", unique = true, nullable = false)
	private int idCronogramaPlanOperativo;

	@Temporal(TemporalType.DATE)
	@Column(name = "crdo_fecha", nullable = false)
	@NotNull
	private Date fecha;

	@Column(name = "crdo_avance", nullable = false, precision = 12, scale = 2)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal avance = BigDecimal.ZERO;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "drdo_id", nullable = true)
	private DetalleRdo detalleRdo;

	@Column(name = "crdo_nombre_dia", nullable = false, length = 20)
	@NotNull
	private String nombreDia;

	@Column(name = "crdo_dia_no_laborable", nullable = false)
	private boolean diaNoLaborable;

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.asinfo.as2.entities.EntidadBase#getId()
	 */
	@Override
	public int getId() {
		return this.idCronogramaPlanOperativo;
	}

	public int getIdCronogramaPlanOperativo() {
		return idCronogramaPlanOperativo;
	}

	public void setIdCronogramaPlanOperativo(int idCronogramaPlanOperativo) {
		this.idCronogramaPlanOperativo = idCronogramaPlanOperativo;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public BigDecimal getAvance() {
		return avance;
	}

	public void setAvance(BigDecimal avance) {
		this.avance = avance;
	}

	public DetalleRdo getDetalleRdo() {
		return detalleRdo;
	}

	public void setDetalleRdo(DetalleRdo detalleRdo) {
		this.detalleRdo = detalleRdo;
	}

	/**
	 * Get del atributo nombreDia
	 * 
	 * @return el valor del atributo nombreDia
	 */
	public String getNombreDia() {
		return nombreDia;
	}

	/**
	 * Set del atributo nombreDia
	 * 
	 * @param nombreDia
	 *            valor para asignar al atributo nombreDia
	 */
	public void setNombreDia(String nombreDia) {
		this.nombreDia = nombreDia;
	}

	public boolean isDiaNoLaborable() {
		return diaNoLaborable;
	}

	public void setDiaNoLaborable(boolean diaNoLaborable) {
		this.diaNoLaborable = diaNoLaborable;
	}

}
